package com.yc.backstage.mapper;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yc.backstage.entity.SysRole;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yc.backstage.entity.SysUserRole;
import com.yc.backstage.entity.vo.QueryRoleVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
* @Classname SysRoleController
* @Description
* @Version 1.0.0
* @Date 2022-08-23 11:49:19
* @Created by Mikechen
*/
@Mapper
public interface SysRoleMapper extends BaseMapper<SysRole> {
    /**
     * 根据用户名查询角色
     *
     * @param userName 用户名
     * @return 角色列表
     */
     List<SysRole> selectRolesByUserName(String userName);
    /**
     * 修改角色信息
     *
     * @param role 角色信息
     * @return 结果
     */
     int updateRole(SysRole role);
    /**
     * 根据条件分页查询角色数据
     *
     * @param role 角色信息
     * @return 角色数据集合信息
     */
     List<SysRole> selectRoleList(SysRole role);
    /**
     * 根据用户ID查询角色权限
     *
     * @param userId 用户ID
     * @return 权限列表
     */
    List<SysRole> selectRolePermissionByUserId(Long userId);

    /**
     * 查询所有角色
     * @return
     */
    List<SysRole> selectAll();

    /**
     * 根据用户ID查询用户角色id集合
     *
     * @param userId 用户ID
     * @return 权限列表
     */
    List<Long> selectRoleIdsByUserId(Long userId);

    /**
     * 分页按条件查询角色
     * @param page
     * @param queryRoleVo
     * @return
     */
    Page<SysRole> selectByPage(Page<SysRole> page,@Param("queryRoleVo")QueryRoleVo queryRoleVo);

    /**
     * 校验角色名称是否唯一
     *
     * @param roleName 角色名称
     * @return 角色信息
     */
     SysRole checkRoleNameUnique(String roleName);

    /**
     * 校验角色权限是否唯一
     *
     * @param roleKey 角色权限
     * @return 角色信息
     */
     SysRole checkRoleKeyUnique(String roleKey);
    /**
     * 新增角色信息
     *
     * @param role 角色信息
     * @return 结果
     */
     int insertRole(SysRole role);
    /**
     * 通过角色ID查询角色
     *
     * @param roleId 角色ID
     * @return 角色对象信息
     */
     SysRole selectRoleById(Long roleId);

    /**
     * 批量新增用户角色信息
     *
     * @param userRoleList 用户角色列表
     * @return 结果
     */
     int batchUserRole(List<SysUserRole> userRoleList);
}
